import axios from 'axios'
import store from '@/store'
import JSONBig from 'json-bigint'
import { Toast } from 'vant'

// const jsonStr = '{ "art_id": 1245953273786007552 }'

// axios 怎么处理json数据的
// console.log(JSON.parse(jsonStr))
// console.log(JSONBig.parse(jsonStr))
// console.log(JSONBig.parse(jsonStr))

// console.log(JSONBig.stringify(JSONBig.parse(jsonStr)))

// axios.defaults.baseURL = 'www.a.com'
// axios.defaults.baseURL = 'www.b.com'

// axios.defaults.timeout = 3000
// axios.defaults.timeout = 5000

// axios.create得到了一个新的实例request
// axios 具备的功能 request 基本都具备
// axios.get()
// request.get()
// axios({})
// http://toutiao-app.itheima.net/
// http://ttapi.research.itcast.cn/
const request = axios.create({
  baseURL: 'http://toutiao-app.itheima.net',
  // 处理响应数据
  transformResponse: [function (data) {
    // data 就是后台返回的原始数据
    try {
      return JSONBig.parse(data)
    } catch (err) {
      return data
    }
  }]
})

// 什么时候会用到请求拦截器?
// 多个请求 具有 相同的配置 可以使用拦截器进行统一配置
request.interceptors.request.use(config => {
  // config: 每次请求的配置和请求的基本信息
  Toast.loading({
    message: '加载中...',
    forbidClick: true,
    duration: 0
  })
  const { user } = store.state
  if (user && user.token && config.url === '/v1_0/authorizations' && config.method === 'put') {
    config.headers.Authorization = 'Bearer ' + user.refresh_token
  } else if (user && user.token) {
    config.headers.Authorization = 'Bearer ' + user.token
  }
  return config
})

// 响应拦截器
request.interceptors.response.use(res => {
  // 已经被axios处理之后的
  Toast.clear()
  return res
})

export default request
